构建SpringBoot 应用docker镜像
1.第1课 高级篇幅之构建SpringBoot应用docker镜像上集
官方文档:https://spring.io/guides/gs/spring-boot-docker/
1、步骤:maven里面添加配置pom.xml
简介:使用Docker的maven插件,构建springboot应用
<!--在maven最上面的申明的地方--properties-->
<properties>
<docker.image.prefix>xdclass</docker.image.prefix>
</properties>
<build>
<!--项目打包的名称-->
<finalName>docker-demo</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
配置讲解
Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️

高能预警
No plugin found for prefix ‘docker’ in the current project and in the plugin groups
在Maven的配置文件 conf/settings.xml中添加com.spotify1
2
3
4
5<pluginGroups>
<pluginGroup>com.spotify</pluginGroup>
</pluginGroups>
注意setting配置文件在maven的仓库里面找不到 重新更新idea中maven的插件 然后 更换.m2中conf中setting.xml的内容#详细错误如下:om.spotify.docker.client.shaded.com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.spotify.docker.client.messages.RegistryAuth: no String-argument constructor/factory method to deserialize from String value (‘swarm’)
起初pom.xml中docker-maven-plugin的版本是1.0.0,使用mvn package docker:build -e构建Image出现如上异常。
百般搜索无果,后来看其他的Spring Boot构建Docker镜像有用的是0.4.3,遂修改之。- 解决办法
将小D课堂里面的插件
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>改为⭐️⭐️
1 | <groupId>com.spotify</groupId> |
⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️
第2课 高级篇幅之构建SpringBoot应用docker镜像下集
步骤1创建Dockerfile,默认是根目录,(可以修改为src/main/docker/Dockerfile,如果修则需要制定路径)
简介:打包SpringCloud镜像并上传私有仓库并部署
1、 什么是Dockerfile : 由一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜 像
实战
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
参数讲解:
FROM <image>:<tag> 需要一个基础镜像,可以是公共的或者是私有的, 后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令
VOLUME 配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容 器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据 文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
ARG 设置编译镜像时加入的参数, ENV 是设置容器的环境变量
COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点
ENTRYPOINT 容器启动时执行的命令
EXPOSE 8080 暴露镜像端口第3课构建镜像
2、构建镜像
mvn install dockerfile:build
打标签
docker tag a1b9fc71720d registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808
推送到镜像仓库
docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808
应用服务器拉取镜像
docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808
docker run -d --name xdclass_docker_demo1 -p 8099:8080 a1b9fc71720d
3、查看启动日志 docker logs -f containerid实战
1.mvn install dockerfile:build。不知道为什么终端没有用idea中终端却有用 😄哈哈

2.docker images

没有名字镜像??注意在idea中测试的话就要用idea 不要随变改成终端

3.docker run -d –name demo -p 8080:8080 8ef42611e3b0
备注:运行镜像 –name 指定名字 -d 后台运行 8ef42611e3b0:刚刚构建的image的ID
name 不会用就别用
4.docker ps
查看一下镜像的进程

???没有程序。测试一下
